/**
 * Author : Jorge Mejuto Create : 20/05/2010
 */

package net.eyra.negocio.explotacion.informes.RD;

import java.util.TreeMap;

public class RD661SOLAR implements RD {

    private final double limite_superior = 363.906;
    private final double limite_inferior = 268.757;
    private final double prima = 84.681; // prima de reactiva
    private final double prima_referencia = 268.717;

    /**
     * 
     * @param precio_mercado
     * @param porcentaje_reactiva
     *            . Pasamos 5 para 5% o 23 para 23%
     * @return
     */
    public double CalculoPrecioMedio(TreeMap<String, Double> precio_mercado, double porcentaje_reactiva) {

        double precio_medio = CalcularPrecioMedioMercado(precio_mercado);

        precio_medio += prima_referencia;

        if (precio_medio < limite_inferior) precio_medio = limite_inferior;
        if (precio_medio > limite_superior) precio_medio = limite_superior;

        precio_medio += prima * (porcentaje_reactiva / 100);
        precio_medio += -1.5;

        return precio_medio;
    }

    private double CalcularPrecioMedioMercado(TreeMap<String, Double> precio_mercado) {
        double precio_medio_mercado = 0;

        int num_dias = 0;
        for (String clave : precio_mercado.keySet()) {
            precio_medio_mercado += precio_mercado.get(clave).doubleValue();
            num_dias++;
        }
        return precio_medio_mercado / num_dias;
    }
}
